package part13;

import java.util.ArrayList;

/**
 * @author wcj
 * @Date 2021/5/24 15:26
 * @Version 1.0
 */
public class Part133 {

    public static void main(String[] args) {
        ArrayList<Dog> dogs = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            dogs.add(new Dog());
        }
        System.out.println(dogs);
    }
}

/**
 * 无意识的递归：这里打印将会发生异常，因为我们想要打印对象的地址
 * 我们重写toString()方法，将一个字符串通过+与this拼接在一块
 * java编译器发现加号后面的不是字符串就会进行转化，而这里面的转换调用的又是对象的toString方法
 * 因此形成了循环递归调用，所以发生错误，这里我们实际上应该使用Object.toString()，即使用super.toString()
 */
class Dog {
    @Override
    public String toString() {
//        return "Dogs address:" + this;
        return "Dogs address:" + super.toString();
    }
}
